package com.content;

/*
 * @author：周洋帆
 * @param:
 *     pageNumber:用于接受jsp传入的总页面数。
 *     baseUrl：用于接受jsp传入的图书的地址。
 * @see：
 *     get set方法，用于jsp和action之间传递参数。
 *     convert方法， 将将传入的页面映射成具体的文件名（文件名是事先根据一定规则定好的）。总目的是最终
 *       根据baseUrl和转化后的文件名找到存储图书该页的文件。
 *     execute方法：1，根据baseUrl和pageNumber转化后找到相应的文件，读取页面内容。
 *       2，根据baseUrl和pageNumber找个存储该页关键词的文件，读取并获得关键词 
 *       3，将关键词进行替换，根据html规则替换成超链接，并绑定点击事件。
 *       4，将所有出现图片的文本，替换成html规则的img。
 */

import java.io.*;
import java.util.*;
import java.util.regex.Pattern;

import java.util.regex.Matcher;
import com.opensymphony.xwork2.ActionSupport;
public class BookContentAction extends ActionSupport {
	private int pageNumber;
	private String baseUrl,newUrl;
	public String result="";
	public Map<String,String>searchKey=new HashMap<String,String>();
	public void setPageNumber(int pageNumber){
		this.pageNumber=pageNumber;
	}
	public int getPageNumber(){
		return pageNumber;
	}
	public String getBaseUrl(){
		return baseUrl;
	}
	public void setBaseUrl(String baseUrl){
		this.baseUrl=baseUrl;
	}
	public String execute() throws Exception{
		String page=convert(pageNumber);
		baseUrl=baseUrl.replaceAll("\n", "");
		baseUrl=baseUrl.trim();
//		System.out.println(baseUrl);
		File f=new File(baseUrl+"/txt"+page);
		String[]temp=baseUrl.split("/");
		String number=temp[3];
		String[] keyWord=null;;
		File fWord=new File(baseUrl+"/txtNgram"+page);
		try{
			FileInputStream fis=new FileInputStream(fWord);
			InputStreamReader isr=new InputStreamReader(fis,"utf-8");
			BufferedReader br=new BufferedReader(isr);
			if(br.ready()){
				String key=br.readLine();
				if(key.contains(",")){
					keyWord=key.split(",");
				}
				else{
			        System.out.println(keyWord.toString()+"\t"+"乱码");
				}
			}else{
				keyWord=null;
			}
		}catch(IOException e){e.printStackTrace();}
		
		
		
		try {
			FileInputStream fis=new FileInputStream(f);
			InputStreamReader isr=new InputStreamReader(fis,"gbk");
			BufferedReader br=new BufferedReader(isr);
			while(br.ready()){
				result=result+br.readLine()+"<br/><br/>&nbsp&nbsp&nbsp&nbsp";
			}
			Pattern pattern=Pattern.compile("<pic=(.*?)>",Pattern.DOTALL);
			Matcher matcher=pattern.matcher(result);
			while(matcher.find()){
				String pic=matcher.group(1);
				String url="/book/jpgs/"+number+"/jpg/"+pic;
				result=result.replaceFirst("<pic=.*?>","<img src=\""+url+"\"/>");
			    
			}
			if(keyWord!=null){
				for(int i=0;i<keyWord.length;i++){
					result=result.replaceAll(keyWord[i], "<"+i+">");
					searchKey.put("^"+i+"^", keyWord[i]);
				}
			}
			
			if(keyWord!=null){
			    for(int i=0;i<keyWord.length;i++){
//			    	System.out.println(keyWord[i]);
			    	result=result.replaceAll("<"+i+">", "<a onclick=\"setVideo('"+keyWord[i]+"')\">"+keyWord[i]+"</a>");
			    	
			    }
			}
//			System.out.println(result);
//			if(pageNumber==81)
//	    		System.out.println(result);
//			System.out.println(result);
			
//			result.replaceAll("<.*?>", " 照片 ");
		} catch (IOException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
		return "success";
	}
	public String convert(int n){
		String number;
		if(n<10){
			number="/0000000"+n+".txt";
		}
		else if(n<100){
			number="/000000"+n+".txt";
		}
		else{
			number="/00000"+n+".txt";
		}
		return number;
	}
	
	
	

}
